package com.principles.structure.decorator;

/**
 * @Description 装饰器模式 —— 动态的给一个对象添加一些额外的功能。就增加功能来说，装饰器模式比生成子类更为灵活
 * @Date 2025/1/27 10:50
 **/
public class DecoratorPattern {
    public static void main(String[] args) {
        RobotDecorator robotDecorator = new RobotDecorator(new FirstRobot());
        robotDecorator.doSomething();
        robotDecorator.doMore();

    }

}
// 机器人 生产的机器人不符合客户要求 需要二开

interface Robot{
    void doSomething();
}
class FirstRobot implements Robot{

    @Override
    public void doSomething() {
        System.out.println("生成第一代机器人");
    }
}

class RobotDecorator implements Robot{

    private Robot robot;
    public  RobotDecorator(Robot robot ) {
        this.robot = robot;
    }

    @Override
    public void doSomething() {
        robot.doSomething();
    }

    public void doMore(){
        System.out.println("开始做扩展的");
    }
}